﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.IO;
using System.Runtime.Serialization.Formatters.Binary;

namespace cara_joe_e_bob
{
    public partial class Form1 : Form
    {
        cara joe;
        cara bob;
        int banco = 100;
        BinaryFormatter formatter = new BinaryFormatter();
        public void AtualizarFormulario()
        {
            dinheirojoe.Text = joe.Nome + " tem R$ " + joe.Dinheiro;
            dinheirobob.Text = bob.Nome + " tem R$ " + bob.Dinheiro;
            dinheirobanco.Text = "O banco tem R$" + banco; 
        }

        public Form1()
        {           
            InitializeComponent();
            bob = new cara();
            bob.Nome = "Bob";
            bob.Dinheiro = 100;

            joe = new cara()                //
            {Nome = "Joe", Dinheiro = 50}; // outra forma de inicializar objetos


            AtualizarFormulario();

        }

        private void button1_Click(object sender, EventArgs e)
        {
            if (banco >= 10)
            {
                banco -= joe.ReceberDinheiro(10);
                AtualizarFormulario();
            }
            else 
            {
                MessageBox.Show("O banco esta sem dinheiro.");
            }
        }

        private void button2_Click(object sender, EventArgs e)
        {
            banco += bob.EmprestarDinheiro(5);
            AtualizarFormulario();
        }

        private void button3_Click(object sender, EventArgs e)
        {
            //bob.Dinheiro += joe.EmprestarDinheiro(10);
            //bob.Dinheiro = bob.Dinheiro + joe.EmprestarDinheiro(10);
            bob.ReceberDinheiro(joe.EmprestarDinheiro(10));
            AtualizarFormulario();
        }

        private void button4_Click(object sender, EventArgs e)
        {
            joe.Dinheiro += bob.EmprestarDinheiro(5);
            AtualizarFormulario();
        }

        private void salvarjoe_Click(object sender, EventArgs e)
        {
            using (Stream output = File.Create("Guy_File.data"))
            {
                formatter.Serialize(output, joe);
            }
        }

        private void carregarjoe_Click(object sender, EventArgs e)
        {
            using (Stream input = File.OpenRead("Guy_File.data"))
            {
                joe  = (cara)formatter.Deserialize(input);
            }
            
        }


   
    }
}
